home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- **
- ** Module: Renderer_Demo.c
- **
- ** Purpose: Demo plug-in renderer
- **
- ** Copyright (C) 1992-1996 Apple Computer, Inc. All rights reserved.
- **
- *****************************************************************************/
-
- #include "QD3D.h"
- #include "QD3DExtension.h"
- #include "QD3DRenderer.h"
- #include "QD3DStyle.h"
- #include <assert.h>
-
- long DemoRenderer_Register(
- void);
-
- /*===========================================================================*\
- * Macros
- \*===========================================================================*/
- #define UNUSED(x) (void) (x)
-
- /*===========================================================================*\
- * Constants
- \*===========================================================================*/
- #define kRendererTypeDemo Q3_OBJECT_TYPE('D','E','M','r')
- #define kRendererNameDemo "DemoRenderer"
-
- #define kDemoChangeFlag_SurfaceShader (1 << 0)
- #define kDemoChangeFlag_IlluminationShader (1 << 1)
- #define kDemoChangeFlag_Transformations (1 << 2)
-
- /*===========================================================================*\
- * Types
- \*===========================================================================*/
-
- typedef struct TDemoRendererInfo {
- unsigned long changeFlags;
-
- TQ3Matrix4x4 localToWorld;
- TQ3Matrix4x4 localToFrustum;
-
- TQ3Boolean highlightState;
- TQ3AttributeSet highlightAttributeSet;
- TQ3ColorRGB diffuseColor;
- TQ3ColorRGB transparencyColor;
- float specularControl;
- TQ3ColorRGB specularColor;
- TQ3ShaderObject surfaceShaderAttribute;
- float ambientCoefficient;
-
- TQ3BackfacingStyle backfacingStyle;
- TQ3InterpolationStyle interpolationStyle;
- TQ3OrientationStyle orientationStyle;
- TQ3FillStyle fillStyle;
-
- TQ3ShaderObject surfaceShader;
- TQ3ShaderObject illuminationShader;
- } TDemoRendererInfo;
-
- typedef struct TDemoRendererPrivate {
- TDemoRendererInfo renderInfo;
- } TDemoRendererPrivate;
-
- /*===========================================================================*\
- * Globals
- \*===========================================================================*/
- static TQ3ObjectClass gDemoRenderer;
-
- /*===========================================================================*\
- *
- * Object support
- *
- \*===========================================================================*/
- /*===========================================================================*\
- * DemoRenderer_New
- \*===========================================================================*/
- static TQ3Status DemoRenderer_New(
- TQ3Object object,
- TDemoRendererPrivate *dPriv,
- void *parameters)
- {
- UNUSED(object);
- UNUSED(parameters);
-
- assert(dPriv != NULL);
-
- dPriv->renderInfo.changeFlags = 0;
- dPriv->renderInfo.highlightAttributeSet = NULL;
- dPriv->renderInfo.surfaceShaderAttribute = NULL;
- dPriv->renderInfo.surfaceShader = NULL;
- dPriv->renderInfo.illuminationShader = NULL;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_New
- \*===========================================================================*/
- static void DemoRenderer_Delete(
- TQ3Object object,
- TDemoRendererPrivate *dPriv)
- {
- UNUSED(object);
-
- assert(dPriv != NULL);
-
- if (dPriv->renderInfo.highlightAttributeSet != NULL)
- {
- Q3Object_Dispose(dPriv->renderInfo.highlightAttributeSet);
- }
- if (dPriv->renderInfo.surfaceShaderAttribute != NULL)
- {
- Q3Object_Dispose(dPriv->renderInfo.surfaceShaderAttribute);
- }
- if (dPriv->renderInfo.surfaceShader != NULL)
- {
- Q3Object_Dispose(dPriv->renderInfo.surfaceShader);
- }
- if (dPriv->renderInfo.illuminationShader != NULL)
- {
- Q3Object_Dispose(dPriv->renderInfo.illuminationShader);
- }
- }
-
- /*===========================================================================*\
- * DemoRenderer_StartFrame
- \*===========================================================================*/
- static TQ3Status DemoRenderer_StartFrame(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3DrawContextObject drawContext)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(drawContext);
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_StartFrame
- \*===========================================================================*/
- static TQ3Status DemoRenderer_StartScene(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3CameraObject camera,
- TQ3GroupObject lightGroup)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(camera);
- UNUSED(lightGroup);
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_Flush
- \*===========================================================================*/
- static TQ3Status DemoRenderer_FlushFrame(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3DrawContextObject drawContext)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(drawContext);
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_EndScene
- \*===========================================================================*/
- static TQ3ViewStatus DemoRenderer_EndScene(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv)
- {
- UNUSED(view);
- UNUSED(rPriv);
- return kQ3ViewStatusDone;
- }
-
- /*===========================================================================*\
- * DemoRenderer_Sync
- \*===========================================================================*/
- static TQ3Status DemoRenderer_EndFrame(
- TQ3ViewObject view,
- void *rPriv,
- TQ3DrawContextObject drawContext)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(drawContext);
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_Cancel
- \*===========================================================================*/
- static void DemoRenderer_Cancel(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv)
- {
- UNUSED(view);
- UNUSED(rPriv);
- }
-
- /*===========================================================================*\
- * DemoRenderer_Push
- \*===========================================================================*/
- static TQ3Status DemoRenderer_Push(
- TQ3ViewObject view,
- void *rPriv)
- {
- UNUSED(view);
- UNUSED(rPriv);
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_Pop
- \*===========================================================================*/
- static TQ3Status DemoRenderer_Pop(
- TQ3ViewObject view,
- void *rPriv)
- {
- UNUSED(view);
- UNUSED(rPriv);
- return kQ3Success;
- }
-
- /*===========================================================================*\
- * DemoRenderer_IsBoundingBoxVisible
- \*===========================================================================*/
- static TQ3Boolean DemoRenderer_IsBoundingBoxVisible(
- TQ3ViewObject view,
- void *rPriv,
- const TQ3BoundingBox *bBox)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(bBox);
- return kQ3True;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateBackfacingStyle()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateBackfacingStyle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3BackfacingStyle *data)
- {
- UNUSED(view);
- UNUSED(view);
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.backfacingStyle = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateInterpolationStyle()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateInterpolationStyle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3InterpolationStyle *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.interpolationStyle = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateOrientationStyle()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateOrientationStyle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3OrientationStyle *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.orientationStyle = *data;
-
- return kQ3Success;
- }
-
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateFillStyle()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateFillStyle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3FillStyle *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.fillStyle = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine: DemoRenderer_StyleMetaHandler()
- *
- * Comments:
- *
- \*===========================================================================*/
-
- static TQ3FunctionPointer DemoRenderer_StyleMetaHandler(
- TQ3MethodType methodType)
- {
- switch (methodType)
- {
- case kQ3StyleTypeBackfacing:
- return (TQ3FunctionPointer) DemoRenderer_UpdateBackfacingStyle;
- case kQ3StyleTypeInterpolation:
- return (TQ3FunctionPointer) DemoRenderer_UpdateInterpolationStyle;
- case kQ3StyleTypeOrientation:
- return (TQ3FunctionPointer) DemoRenderer_UpdateOrientationStyle;
- case kQ3StyleTypeFill:
- return (TQ3FunctionPointer) DemoRenderer_UpdateFillStyle;
- default:
- return NULL;
- }
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateHighlightStyle()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateHighlightStyle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3AttributeSet *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- if (rPriv->renderInfo.highlightAttributeSet != NULL)
- {
- Q3Object_Dispose(rPriv->renderInfo.highlightAttributeSet);
- }
- if (*data != NULL)
- {
- Q3Shared_GetReference(*data);
- }
-
- rPriv->renderInfo.highlightAttributeSet = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateDiffuseColor()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateDiffuseColor(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ColorRGB *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.diffuseColor = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateAmbientCoefficient()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateAmbientCoefficient(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- float *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.ambientCoefficient = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateSpecularColor()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateSpecularColor(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ColorRGB *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.specularColor = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateSpecularControl()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateSpecularControl(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- float *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.specularControl = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateTransparencyColor()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateTransparencyColor(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ColorRGB *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.transparencyColor = *data;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateAmbientCoefficient()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateHighlightState(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3Boolean *highlightState)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(highlightState != NULL);
-
- rPriv->renderInfo.highlightState = *highlightState;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateAmbientCoefficient()
- *
- * Comment : Retrieves the new state from the view
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateAttributeSurfaceShader(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ShaderObject *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- if (*data != NULL)
- {
- Q3Shared_GetReference(*data);
- }
- if (rPriv->renderInfo.surfaceShaderAttribute != NULL)
- {
- Q3Object_Dispose(rPriv->renderInfo.surfaceShaderAttribute);
- }
- rPriv->renderInfo.surfaceShaderAttribute = *data;
-
- rPriv->renderInfo.changeFlags |= kDemoChangeFlag_SurfaceShader;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine: DemoRenderer_AttributeMetaHandler()
- *
- * Comments:
- *
- \*===========================================================================*/
-
- static TQ3FunctionPointer DemoRenderer_AttributeMetaHandler(
- TQ3MethodType methodType)
- {
- switch (methodType)
- {
- case kQ3AttributeTypeDiffuseColor:
- return (TQ3FunctionPointer) DemoRenderer_UpdateDiffuseColor;
- case kQ3AttributeTypeAmbientCoefficient:
- return (TQ3FunctionPointer) DemoRenderer_UpdateAmbientCoefficient;
- case kQ3AttributeTypeSpecularColor:
- return (TQ3FunctionPointer) DemoRenderer_UpdateSpecularColor;
- case kQ3AttributeTypeSpecularControl:
- return (TQ3FunctionPointer) DemoRenderer_UpdateSpecularControl;
- case kQ3AttributeTypeHighlightState:
- return (TQ3FunctionPointer) DemoRenderer_UpdateHighlightState;
- case kQ3AttributeTypeSurfaceShader:
- return (TQ3FunctionPointer) DemoRenderer_UpdateAttributeSurfaceShader;
- case kQ3AttributeTypeTransparencyColor:
- return (TQ3FunctionPointer) DemoRenderer_UpdateTransparencyColor;
- default:
- return NULL;
- }
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateLocalToWorld()
- *
- * Comment :
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateLocalToWorldMatrix(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3Matrix4x4 *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.localToWorld = *data;
-
- rPriv->renderInfo.changeFlags |= kDemoChangeFlag_Transformations;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateTransformations()
- *
- * Comment :
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateLocalToFrustumMatrix(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3Matrix4x4 *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- rPriv->renderInfo.localToFrustum = *data;
-
- rPriv->renderInfo.changeFlags |= kDemoChangeFlag_Transformations;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine: DemoRenderer_MatrixMetaHandler()
- *
- * Comments:
- *
- \*===========================================================================*/
-
- static TQ3FunctionPointer DemoRenderer_MatrixMetaHandler(
- TQ3MethodType methodType)
- {
- switch (methodType)
- {
- case kQ3MethodTypeRendererUpdateMatrixLocalToWorld:
- return (TQ3FunctionPointer) DemoRenderer_UpdateLocalToWorldMatrix;
- case kQ3MethodTypeRendererUpdateMatrixLocalToFrustum:
- return (TQ3FunctionPointer) DemoRenderer_UpdateLocalToFrustumMatrix;
- default:
- return NULL;
- }
- }
-
-
- /*===========================================================================*\
- *
- * Shader Support
- *
- \*===========================================================================*/
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateSurfaceShader()
- *
- * Comment :
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateSurfaceShader(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ShaderObject *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- if (*data != NULL)
- {
- Q3Shared_GetReference(*data);
- }
- if (rPriv->renderInfo.surfaceShader != NULL)
- {
- Q3Object_Dispose(rPriv->renderInfo.surfaceShader);
- }
- rPriv->renderInfo.surfaceShader = *data;
-
- rPriv->renderInfo.changeFlags |= kDemoChangeFlag_SurfaceShader;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine : DemoRenderer_UpdateIlluminationShader()
- *
- * Comment :
- *
- \*===========================================================================*/
-
- static TQ3Status DemoRenderer_UpdateIlluminationShader(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3ShaderObject *data)
- {
- UNUSED(view);
-
- assert(view != NULL);
- assert(rPriv != NULL);
- assert(data != NULL);
-
- if (*data != NULL)
- {
- Q3Shared_GetReference(*data);
- }
- if (rPriv->renderInfo.illuminationShader != NULL)
- {
- Q3Object_Dispose(rPriv->renderInfo.illuminationShader);
- }
- rPriv->renderInfo.illuminationShader = *data;
-
- rPriv->renderInfo.changeFlags |= kDemoChangeFlag_IlluminationShader;
-
- return kQ3Success;
- }
-
- /*===========================================================================*\
- *
- * Routine: DemoRenderer_ShaderMetaHandler()
- *
- * Comments:
- *
- \*===========================================================================*/
-
- static TQ3FunctionPointer DemoRenderer_ShaderMetaHandler(
- TQ3MethodType methodType)
- {
- switch (methodType)
- {
- case kQ3ShaderTypeIllumination:
- return (TQ3FunctionPointer) DemoRenderer_UpdateIlluminationShader;
- case kQ3ShaderTypeSurface:
- return (TQ3FunctionPointer) DemoRenderer_UpdateSurfaceShader;
- default:
- return NULL;
- }
- }
-
-
- /*===========================================================================*\
- *
- * Geometry Support
- *
- \*===========================================================================*/
- static TQ3Status DemoRenderer_GeometrySubmit_Triangle(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3GeometryObject geometry,
- void *publicData)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(geometry);
- UNUSED(publicData);
- return kQ3Success;
- }
-
- static TQ3Status DemoRenderer_GeometrySubmit_PixmapMarker(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3GeometryObject geometry,
- void *publicData)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(geometry);
- UNUSED(publicData);
- return kQ3Success;
- }
-
-
- static TQ3Status DemoRenderer_GeometrySubmit_Line(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3GeometryObject geometry,
- void *publicData)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(geometry);
- UNUSED(publicData);
- return kQ3Success;
- }
-
-
- static TQ3Status DemoRenderer_GeometrySubmit_Point(
- TQ3ViewObject view,
- TDemoRendererPrivate *rPriv,
- TQ3GeometryObject geometry,
- void *publicData)
- {
- UNUSED(view);
- UNUSED(rPriv);
- UNUSED(geometry);
- UNUSED(publicData);
- return kQ3Success;
- }
-
-
- /*===========================================================================*\
- * DemoRenderer_GeometryMetaHandler
- \*===========================================================================*/
- static TQ3FunctionPointer DemoRenderer_GeometryMetaHandler(
- TQ3ObjectType methodType)
- {
- switch (methodType) {
- case kQ3GeometryTypeTriangle:
- return (TQ3FunctionPointer) DemoRenderer_GeometrySubmit_Triangle;
- case kQ3GeometryTypePixmapMarker:
- return (TQ3FunctionPointer) DemoRenderer_GeometrySubmit_PixmapMarker;
- case kQ3GeometryTypeLine:
- return (TQ3FunctionPointer) DemoRenderer_GeometrySubmit_Line;
- case kQ3GeometryTypePoint:
- return (TQ3FunctionPointer) DemoRenderer_GeometrySubmit_Point;
- default:
- return NULL;
- }
- }
-
- /*===========================================================================*\
- *
- * Routine: DemoRenderer_MethodsMetaHandler()
- *
- * Comments:
- *
- \*===========================================================================*/
- static TQ3FunctionPointer DemoRenderer_MetaHandler(
- TQ3MethodType pMethodType)
- {
-
- switch (pMethodType)
- {
- case kQ3MethodTypeObjectNew:
- return (TQ3FunctionPointer) DemoRenderer_New;
- case kQ3MethodTypeObjectDelete:
- return (TQ3FunctionPointer) DemoRenderer_Delete;
- case kQ3MethodTypeRendererStartFrame:
- return (TQ3FunctionPointer) DemoRenderer_StartFrame;
- case kQ3MethodTypeRendererStartScene:
- return (TQ3FunctionPointer) DemoRenderer_StartScene;
- case kQ3MethodTypeRendererCancel:
- return (TQ3FunctionPointer) DemoRenderer_Cancel;
- case kQ3MethodTypeRendererEndScene:
- return (TQ3FunctionPointer) DemoRenderer_EndScene;
- case kQ3MethodTypeRendererEndFrame:
- return (TQ3FunctionPointer) DemoRenderer_EndFrame;
- case kQ3MethodTypeRendererClassSupportFlag:
- return (TQ3FunctionPointer)
- ( kQ3RendererClassSupportFlagDoubleBuffer |
- kQ3RendererClassSupportFlagClearBuffer );
- case kQ3MethodTypeRendererIsBoundingBoxVisible:
- return (TQ3FunctionPointer) DemoRenderer_IsBoundingBoxVisible;
-
- case kQ3MethodTypeRendererSubmitGeometryMetaHandler:
- return (TQ3FunctionPointer) DemoRenderer_GeometryMetaHandler;
- case kQ3MethodTypeRendererUpdateStyleMetaHandler:
- return (TQ3FunctionPointer) DemoRenderer_StyleMetaHandler;
- case kQ3MethodTypeRendererUpdateAttributeMetaHandler:
- return (TQ3FunctionPointer) DemoRenderer_AttributeMetaHandler;
- case kQ3MethodTypeRendererUpdateShaderMetaHandler:
- return (TQ3FunctionPointer) DemoRenderer_ShaderMetaHandler;
- case kQ3MethodTypeRendererUpdateMatrixMetaHandler:
- return (TQ3FunctionPointer) DemoRenderer_MatrixMetaHandler;
- default:
- return NULL;
- }
- }
-
- /*===========================================================================*\
- *
- * DemoRenderer_Register
- *
- \*===========================================================================*/
- long DemoRenderer_Register(
- void)
- {
- gDemoRenderer =
- Q3RendererClass_Register(
- kRendererTypeDemo,
- kRendererNameDemo,
- DemoRenderer_MetaHandler,
- 0,
- sizeof(TDemoRendererPrivate));
-
- return 0;
- }